/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package facades;

import entities.Almacen;
import entities.LineaRecepcionTraspasoMercancia;
import entities.RecepcionTraspasoMercancia;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author damfercer
 */
@Stateless
public class RecepcionTraspasoMercanciaFacade extends AbstractFacade<RecepcionTraspasoMercancia> {
    @PersistenceContext(unitName = "CorporatePU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public RecepcionTraspasoMercanciaFacade() {
        super(RecepcionTraspasoMercancia.class);
    }
    
    public List<RecepcionTraspasoMercancia> getRecepcionesTraspasoMercanciaDeAlmacen(Almacen a){
        Query q=em.createNamedQuery("RecepcionTraspasoMercancia.findByAlmacen",RecepcionTraspasoMercancia.class);
        q.setParameter("idAlmacen", a.getIdAlmacen());
        return q.getResultList();
    }
    
    public List<RecepcionTraspasoMercancia> getRecepcionesTraspasoMercanciaConIncidencias(){
        List<RecepcionTraspasoMercancia> todasRecepciones=this.findAll();
        List<RecepcionTraspasoMercancia> recepcionesIncidencias=new ArrayList<RecepcionTraspasoMercancia>();
        for (RecepcionTraspasoMercancia recepcionTraspasoMercancia : todasRecepciones) {
            for (LineaRecepcionTraspasoMercancia lineaRecepcionTraspasoMercancia : recepcionTraspasoMercancia.getLineaRecepcionTraspasoMercanciaList()) {
                if(lineaRecepcionTraspasoMercancia.getCantidad()!=lineaRecepcionTraspasoMercancia.getLineaEnvioTraspasoMercancia().getCantidad()){
                    recepcionesIncidencias.add(recepcionTraspasoMercancia);
                    break;
                }
            }
        }
        
        return recepcionesIncidencias;  
    }
    
    public List<RecepcionTraspasoMercancia> getRecepcionesTraspasoMercancia(List<Almacen> almacenesOrigen){
        Query q=em.createNamedQuery("RecepcionTraspasoMercancia.findByAlmacenes");
        q.setParameter("almacenes", almacenesOrigen);
        return q.getResultList();
    }
    
}
